Many electronic devices include nonvolatile memory. The nonvolatile memory may be used to store executable code, or for file system storage similar to a disk drive, or for any other use. For example, mobile phones typically include nonvolatile memory to store both executable code and file systems since these devices typically do not have hard disks. Also for example, computers typically include nonvolatile memory to store at least a small amount of executable code that is accessed during the boot process. This code is commonly referred to as the Basic Input/Output System, or “BIOS.”
Security concerns abound. If the contents of nonvolatile memory are maliciously modified, a device may be compromised, or indeed, completely taken over. For example, if the BIOS in a computer is maliciously modified and the computer executes the modified code during the boot process, the computer is effectively hijacked. Also for example, if executable code in a mobile phone is maliciously modified, the phone may also be hijacked.